package com.colorfruit.admin.business.dao;

import com.colorfruit.admin.pojo.entity.PreShelfOrder;
import com.colorfruit.admin.pojo.vo.preonshelf.PreOnShelfVo;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

public interface PreShelfOrderMapper {
    int deleteByPrimaryKey(Long id);

    int insert(PreShelfOrder record);

    int insertSelective(PreShelfOrder record);

    PreShelfOrder selectByPrimaryKey(Long id);

    int updateByPrimaryKeySelective(PreShelfOrder record);

    int updateByPrimaryKey(PreShelfOrder record);

    /**
     * 获取该商品最近的预上架记录
     *
     * @param productId
     * @return
     */
    List<PreShelfOrder> getPreShelfOrderInfo(@Param("productId") Long productId);

    /**
     * 获取当天的预上架数据
     *
     * @param theDayBegin
     * @param theDayEnd
     * @return
     */
    List<PreOnShelfVo> selectPreShelfOrderList(@Param("productName") String productName,
                                               @Param("theDayBegin") Date theDayBegin,
                                               @Param("theDayEnd") Date theDayEnd);

    /**
     * 获取当天的预上架数据
     *
     * @param theDayBegin
     * @param theDayEnd
     * @return
     */
    List<PreShelfOrder> selectTodayProduct(@Param("productId") Long productId,
                                           @Param("theDayBegin") Date theDayBegin,
                                           @Param("theDayEnd") Date theDayEnd);

    /**
     * 获取
     *
     * @return
     */
    List<PreOnShelfVo> selectContainLabelList(@Param("beginTime") Date beginTime,
                                              @Param("endTime") Date endTime);

    /**
     * 获取
     *
     * @return
     */
    List<PreOnShelfVo> selectContainLabelListWithGlobal(@Param("globalControlId") Long globalControlId);

    /**
     * 获取时间段内的上架订单列表
     *
     * @param globalControlId
     * @return
     */
    List<String> selectShelfNameWitTimeByGlobal(@Param("globalControlId") Long globalControlId);

    /**
     * 获取时间段内的上架订单列表
     *
     * @param beginTime
     * @param endTime
     * @return
     */
    List<String> selectShelfNameWitTime(@Param("beginTime") Date beginTime,
                                        @Param("endTime") Date endTime);

    /**
     * 获取活动列表
     *
     * @param beginTime
     * @param endTime
     * @return
     */
    List<PreOnShelfVo> selectActivityList(@Param("beginTime") Date beginTime,
                                          @Param("endTime") Date endTime,
                                          @Param("activityName") String activityName);

    /**
     * 获取活动列表
     *
     * @return
     */
    List<PreOnShelfVo> selectActivityListWithGlobal(@Param("globalControlId") Long globalControlId,
                                                    @Param("activityName") String activityName);

    /**
     * 获取时间段内热销商品列表
     *
     * @param beginTime
     * @param endTime
     * @return
     */
    List<PreOnShelfVo> selectHotSaleProductList(@Param("beginTime") Date beginTime,
                                                @Param("endTime") Date endTime);

    /**
     * 获取时间段内热销商品列表
     *
     * @return
     */
    List<PreOnShelfVo> selectHotSaleProductListWithGlobal(@Param("globalControlId") Long globalControlId);

    /**
     * 获取首页普通产品列表
     *
     * @param beginTime   开始时间
     * @param endTime     结束时间
     * @param productType
     * @return
     */
    List<PreOnShelfVo> selectHomeProductList(@Param("beginTime") Date beginTime,
                                             @Param("endTime") Date endTime,
                                             @Param("productType") String productType,
                                             @Param("size") int size);

    List<PreOnShelfVo> selectHomeProductListWithGlobal(@Param("globalControlId") Long globalControlId,
                                                       @Param("productType") String productType,
                                                       @Param("size") int size);
    PreOnShelfVo getPreOnShelfData(@Param("globalControlId") Long globalControlId,
                                   @Param("productId") Long productId);
}